/*
Engine.hpp
----------

Par Bréhaut Vincent le 20/02/2011

Rôle: Regrouper les différents moteurs du jeu(graphique, evenementiel etc...)
*/

#ifndef DEF_ENGINE
#define DEF_ENGINE

#include <iostream>
#include <vector>
#include <SFML/Graphics.hpp>
#include "GraphicEngine.hpp"
#include "Configs.hpp"

class Engine
{
    public:
        Engine(sf::RenderWindow &App); // Constructeur de la classe
        Engine(sf::RenderWindow &App, GraphicEngine *graphic, Configs *config); // Constructeur de la classe
        void SetGraphicEngine(GraphicEngine *graphic);
        void SetConfigsEngine(Configs *config);
        //void SetMusicEngine(MusicEngine *graphic);
        //void SetEventEngine();

        sf::Event* Event();
        bool GetEvent(sf::Event& event);
        GraphicEngine* Graphic() const;
        Configs* Config();

        sf::RenderWindow& App();
    protected:
        sf::RenderWindow &m_app;
        sf::Event *m_event;
        Configs *m_configs; // Configuration du jeu
        GraphicEngine *m_graphic; // Moteur graphique
};

#endif
